In a generic computer system, a central processing unit (CPU) is deployed to perform general computation tasks. In order to solve various particular problems, especially for those computation intensive and requiring parallel computing, other computation units have been added to the computer system. Among these computation units the most common one is a graphics processing unit (GPU).
As the performance of the GPU grows rapidly, general-purpose computing on GPUs (GPGPU) that utilizes GPU for massively parallel computing applications has become a trend for the next generation high performance computing. The GPU achieves parallel computing to enhance computation performance by scheduling multiple thread groups and dispatching the thread groups to multiple processing elements to be executed simultaneously. Thus there is a need for an efficient scheduling method.